Skip to main content

Full text of "Arduino"

See other formats




build, hack, tweak, share, discover. 


Written By: Steven Robert Cypherd 


[raw] I was working on my Picaxe 28x2 robot from and I wanted 
lights and I needed more sensors. I had four input pins left. With the 28x2 you can make the 
pins anything that you need. I went back to electronics to find some answers. I looked up 
shift registers on and I bought the latest CD74HC164 serial-in 
parallel-out. This is why I made Easy Lights. For two pins you get eight lights. Yes, there is 
a little flicker. It is a shift register. Each time the lights change you have to shift in all eight 
lights. On slower systems you can use the Master Reset to clear the lights, but it still 
flickers when loading the lights. 

For the files please see and as I 
complete this article. 

© Make Projects Page 1 of 6 


My programs are just a demonstration to show how my light board works. All you need is 
something like doLights or shif tout and maybe checkLights to run your lights. 
Programming can be fun. I left some mistakes in my Basic Stamp 1 program 
(EasyLightsI .bs1) because they are very common mistakes. Look at tPause and note that 
it is a byte. When I changed the timing to a variable I put the pause time of 3000 into 
tPause and I got gunk out. Why? A byte holds a maximum of 255 in decimal terms. 
Processors like the Basic Stamps use 16 bits or "word" size for all math operations. When 
you put 3000 into a byte-size variable you only get the low byte of the word size of 3000. 
That is 184 decimal or 10111000 in binary. The system tells you nothing for math errors like 
this. You see something wrong with your program. That is all you get. This is a good 
example of a very hard error to find. Even I think that I can't be that stupid. 

doLights is an example of programming for a device. A shift register like the CD74HC164 
has three inputs (Clock, Data and Master Reset) that control the outputs, which are 
connected to lights in this case. You set Data to high or low and raise your Clock high, wait 
and set your Clock low and repeat this for all 8 bits in the register. To clear the lights you 
can load all 8 lights with Data low or bring Master Reset low, wait and set it high. Master 
Reset needs to be high for normal operation. Most processors like mine are too slow to 
necessitate waiting between setting the Clock high and then setting it low. 

checkLights is my way of efficiently using the bits of each of my lights for easy logical 
testing. Bits only have two values: for off and 1 for on. checkLights sets litTmp to the 
bit value of each light. This makes testing easy, if litTmp = l then doLitOn. Simple. 
Most processors give you access to the bits of the first few bytes of memory. If you tested 
bit 4 of the byte lights (light #5) you would get 16, the position value of that bit in the byte. 
Messy, to say the least. Logic operators like and and or will give you the bit position value 
too. In Larson to set the high bit of lights I set lights to 128 (the value of bit 7, the high bit 
in lights). Binary notation shows how the processor sees your numbers in binary. 

• Position = value 

o Bit 7=128 

o Bit 6=64 

o Bit 5=32 

° Bit 4=16 

o Bit 3=8 

o Bit 2=4 

o Bit 1=2 

o Bit 0=1 

© Make Projects Page 2 of 6 


• Examples: 

° Bit + Bit 1 = 3 
° Bit 2 + bit = 5 

It is hard being a geek because no one ever understands you. I wish I had friends that I 
could share this with. I know how lost I can get in my projects. Geeks have hearts too and 
pretty normal lives. 

Easy Lights would be a great project to teach electronics, programming, processors and 
making boards. If you are not making money on my ideas then have fun. If you make money 
then contact me, please. 

The PDF file contains the circuit board layout. 

Step 1 — EasyLights 

PwU layout on bottom Circuit Image- Not to bcrIg-, 

• You can use these processors and programs to run my EasyLights: 

• The Basic Stamp 1 version has a button and three modes: Larson, Binary and Random. I 
have an old original Basic Stamp 1 that I just bought a new carrier board for and a new 
Basic Stamp 1 project board. 

• EasyLights"!. bs1: Shows a couple of errors. See what you can find. 

• EasyLights2.bs1: Fixed everything, I think. Used pause 1000. Added random numbers. 

© Make Projects 

Page 3 of 6 


Step 2 



Jtvf*nml*iM*-iwn<J«k!M £«*." '*«**> 1 iwrtLM 



• EasyLights is easy to use and hook up. 

• The Basic Stamp 2 version has a button and three modes: Larson, Binary and Random. 
Plus, I run the "overstuffing a byte" error using the debug terminal. I will try to add a speed 
button. I have an old original Basic Stamp 2 that I upgraded its super carrier board with 
new headers and a cute mini breadboard. I also have two Sumo Bot Basic Stamp 2s that I 
am working on. I also have a Basic stamp 2 project board that is great for learning Basic 
Stamp 2 programming. 

• EasyLights2.bs2: Getting started 

• EasyLights3.bs2: Basics are done: Button, Larson, Binary and Random modes. 

• EasyLights4.bs2: Added the "overstuffing a byte" error. 

• EasyLights5.bs2: Added a flag to turn off "overstuffing a byte". Fixed Binary mode. 

© Make Projects 

Page 4 of 6 


Step 3 

lf:tsit- Sl-iimp ^ 

HunnVVurk BOlkI>i~ 
Ru lilting 

Easy* -ighrs 

N4>i.w Tvl i ■ ■ I Urn 


• Running EasyLights: 

• The Picaxe 28x2 version has two buttons: mode and speed. Modes are Larson, Binary and 
Random. This is where Easy Lights comes from. I am making a lights plus analogue board 
for my robot from . This is a perfect starter robot for anyone. 
You get the Picaxe 28 board with an L293 motor driver chip, two right-angle motors with 
large wheels, a Sharp GP2D12 Infrared range finder and one full-size servo. There are 
tons of ideas on the web site. 

• easyLightsl.bas: This program runs on the Picaxe. 

© Make Projects 

Page 5 of 6 


Step 4 

• Last is the Arduino Uno with a 
Maker Shield and one button 
running Binary, Larson and 
Random modes. I got my Arduino 
at the . I got a 
full kit with electronic parts, How to 
Program Arduino book and a Maker 
Shield to build. I love C and that is 
what you program the Arduinos 
with. Note: The file extension has 
changed to .ino with the new 
Arduino environment. It will still 
open .pde files but it only saves as 
.ino files. This is my favorite 

• easyLightsl.ino: Getting started 

• easyLights2.ino: Cleaned it up and 
added a subroutine for Larson 
mode. I use the shiftout 
function. Perfect for a shift register. 

• Making boards is so easy now. 
Last picture lower right is making 
twisted cables. 

Programming is fun! 

This document was last generated on 2012-12-24 05:30:30 AM. 

© Make Projects 

Page 6 of 6